package com.sky.controller.admin;

import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin/category")
public class CategoryController {//  分类管理
    @Autowired
    private CategoryService categoryService;

    //分页查询
    @GetMapping ("/page")// 可以封装成对象
//    public Result<PageResult> pageQuery(String name, Integer page, Integer pageSize, Integer type ){
////        System.out.println("参数"+name+page+pageSize+type);
//        return Result.success(categoryService.pageQuery(name,page,pageSize,type));
//    }
    public Result<PageResult> pageQuery(CategoryPageQueryDTO categoryPageQueryDTO){
        return Result.success(categoryService.pageQuery(categoryPageQueryDTO));
    }
    // todo 用对象封装参数 CategoryPageQueryDTO
    //修改分类
    @PutMapping
    public Result updateCategory(@RequestBody CategoryDTO categoryDTO){
        System.out.println("修改参数"+categoryDTO);
        categoryService.updateCategory( categoryDTO);
        return Result.success();
    }
    //修改 启用 禁用 状态
    @PostMapping("/status/{status}")
    public Result startOrStop(@PathVariable Integer status,Long id){//第一个路径传参 第二个普通传参
        //  System.out.println("修改状态"+status+id);
        categoryService.startOrStopStatus(status,id);
        return Result.success();
    }
    //新增分类
    @PostMapping
    public Result addCategory(@RequestBody CategoryDTO categoryDTO){
        //System.out.println("新增参数"+categoryDTO);
        categoryService.addCategory(categoryDTO);
        return Result.success();
    }
    //删除分类
    @DeleteMapping
    public Result deleteCategory(Long id){
        System.out.println("删除参数"+id);
        //todo  删除分类时，需要判断是否有关联的菜品或套餐，如果有关联的菜品或套餐，则不允许删除
        categoryService.deleteCategory(id);
        return Result.success();
    }
    //根据类型查询分类  去掉
    @GetMapping("/list")
    public Result<List<Category>> listByType(Integer type){
       // System.out.println("查询参数"+type);
        return Result.success(categoryService.listByType(type));
    }
    //
}
